home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 21 / AACD 21.iso / AACD / Graphics / SMan / WarpOS / Source / ULP2.c < prev    next >
Encoding:
C/C++ Source or Header  |  2001-03-28  |  1.1 KB  |  58 lines

  1. #include    <clib/all_protos.h>
  2. #include    <exec/types.h>
  3. #include    <math.h>
  4. #include    <float.h>
  5.  
  6. extern LONG xtemp,MaxCnt,CurCnt;
  7. extern double XCenter,Factor,Limit,Two;
  8. extern UWORD Color;
  9. extern ULONG *LPixelBuf,*ColorTable32;
  10. extern int BPP;
  11.  
  12. extern void PlotIt(void);
  13.  
  14. void UseLibP2(double yRel)
  15. {
  16. double    xRel,Zr,Zi,Zr2,Zi2,Z2;
  17. ULONG *ColSrc;
  18.     xRel = xtemp;
  19.     xRel = xRel - XCenter;
  20.     Zr = xRel/Factor;
  21.     Zi = yRel;
  22.     xRel = Zr;
  23.     CurCnt = 1;            /* Initialize Counter */
  24.     while (CurCnt < MaxCnt)    {
  25.         Zr2 = Zr*Zr;    /* Find Zr^2 */
  26.         Zi2 = Zi*Zi;    /* Find Zi^2 */
  27.         Z2 = Zr2+Zi2;        /* Find Zr^2 + Zi^2 */
  28.         if (Z2 > Limit)    {    /* is |Z| > 2*Factor */
  29.             if (BPP >= 2) {
  30.                 ColSrc = (ULONG *)ColorTable32 + (ULONG)CurCnt;
  31.                 *LPixelBuf++ = *ColSrc;
  32.                 }
  33.             else    {
  34.                 Color = CurCnt;
  35.                 PlotIt();
  36.                 }
  37.             return;
  38.             }
  39.         Zi = Two*Zi*Zr;        /* Find original Zi * Zr */
  40.         Zr2 = Zr2 - Zi2;    /* Find Zr^2 - Zi^2 */
  41.         Zr = xRel + Zr2;    /* Find New Zr */
  42.         Zi = yRel + Zi;     /*Add in original Zi to get new Zi */
  43.         CurCnt++;
  44.         }
  45.  
  46.     if (BPP >= 2) {
  47.             ColSrc = (ULONG *)ColorTable32 + 0xffff;
  48.             *LPixelBuf++ = *ColSrc;
  49.             }
  50.         else    {
  51.             Color = 0xffff;
  52.             PlotIt();
  53.             }
  54.  
  55.     return;
  56. }
  57.  
  58.